Skip to main content

概述

Apache Paimon 介绍

Apache Paimon 是 Apache 软件基金会旗下的流批一体湖仓存储项目(原 Flink Table Store,2023 年进入 Apache 孵化器,2025 年毕业为顶级项目)。

它的核心定位是:在数据湖(HDFS / S3 / OSS / MinIO)之上,提供一个支持更新/删除、主键约束、CDC 入湖、快照回溯、流批一体读写的开放表格式——解决传统数据湖(Hive Text/Parquet/ORC)不支持实时 Upsert、小文件多、入湖链路复杂等痛点。

Paimon 在湖仓架构里的位置

典型的湖仓一体分层中,Paimon 通常承担 ODS / DWD / DWS 这三层的存储(ADS 层可选走 StarRocks / Doris / ClickHouse 做加速):

┌────────────────────────────────────────────────────────────────────┐
│ 湖仓一体分层架构 │
├──────────┬──────────┬──────────┬──────────┬────────────────────────┤
│ ODS │ DWD │ DWS │ ADS │ 元数据 / 权限 │
│ 原始贴源 │ 明细清洗 │ 主题汇总 │ 应用集市 │ Hive Metastore │
│ Paimon │ Paimon │ Paimon │ StarRocks│ (Paimon 直接复用 HMS) │
│ (主键表) │ (主键表) │(汇总宽表) │ / Doris │ │
├──────────┴──────────┴──────────┴──────────┴────────────────────────┤
│ 底层湖存储:HDFS / S3 / OSS / MinIO │
└────────────────────────────────────────────────────────────────────┘
▲ ▲ ▲
│ │ │
Flink CDC 入湖 Flink SQL 加工 BI 直查 / 联邦查询

Paimon 对比 Hive / Iceberg / Hudi(选型速记)

能力Hive (Parquet/ORC)Apache IcebergApache HudiApache Paimon
主打场景纯离线数仓(T+1)数据湖批处理 + 分析CDC 入湖(偏 MOR/COW 选型)流批一体 + Flink 生态原生,CDC 入湖 + 实时明细
Flink 流式写❌(只能写小批量,小文件爆炸)⭕(社区版流式写支持弱)⭕(需要配 DFS 或 Hudi Streamer)原生支持:连续 Checkpoint + 自动 Compaction + Changelog 产生
主键 Upsert / Delete❌(只能 Insert Overwrite 全量重写)✅(Merge On Read 性能较弱)✅(MOR 性能好)原生强约束主键表,LSM 结构写放大低
Changelog(下游可流读)⭕(增量读实现较复杂)⭕(MOR 增量可用)一等公民:Flink CDC → Paimon → Flink 下游,整条链路全是流
流批一体读写❌(批为主,流写是硬伤)⭕(批为主)⭕(批+准实时)同一张表:Flink Streaming 写 / Flink Batch 读 / Spark 批读 / Trino 即席读 全部打通
小文件治理❌(自己写脚本合并)✅(定期 Rewrite 进程)✅(Clustering / Compaction)写入时异步/同步自动 Compaction,流式作业无需外部调度
Flink SQL 语法对齐度⭕(还要动 InputFormat)⭕(Flink Catalog 一般)⭕(Flink Catalog 一般)Flink 社区 PMC 直接背书维护,Paimon Catalog 和 Flink 无缝集成,Flink SQL 原封不动就能跑
Hive Metastore 集成✅(原生)✅(直接复用现有 HMS,不用再部署 Paimon 自己的元数据服务)
项目发起方 / 生态Apache Hive(老社区)Netflix / Apple / Snowflake 联合发起Uber / AWS 发起Flink 社区亲自孵化(原 Flink Table Store),阿里/字节/快手/AWS 深度贡献

一句话选型建议:如果你的计算引擎里 Flink 占比很高(尤其是做 Flink CDC + 实时数仓),又想同时支持离线批处理和 BI 查询,选 Paimon 是最顺滑、踩坑最少的

核心特性(湖仓落地最看重的 9 个)

  1. 主键表 + LSM 存储引擎:支持基于主键的高效 Upsert/Delete,写放大比 Hudi MOR 更低,适合 CDC 入湖场景。
  2. Append-only 表:日志/埋点无需更新的场景,用 Append-only 表配合可选 sequence.field 做到乱序去重。
  3. 完整快照管理 + 时间旅行:每次提交生成快照(Snapshot),可按快照 ID / 时间戳回溯查询;TAG 功能可长期保留关键时间点。
  4. Changelog 生产器一等公民changelog-producer 可设为 input / full-compaction / lookup,下游 Flink / Doris / StarRocks 能直接流读 Paimon 的变更。
  5. 自动 Compaction(流式写入时的小文件克星):写入 Checkpoint 后后台自动合并小文件,无需再跑单独的 Spark/Hive SQL 合并脚本,降低运维成本。
  6. Sort Key + Z-Order + Clustering:支持按常用过滤/Join 字段做排序和聚簇,BI 查询性能可比 Hive 提升 5~50 倍。
  7. Bucket 弹性变更bucket = -1(动态 bucket)可以在数据量增大后自动分裂,避免一开始估错 bucket 数导致后期数据倾斜。
  8. 多引擎互通:Flink / Spark / Hive / Trino / Presto / Doris / StarRocks / SeaTunnel 全部支持同一张表读写,真正湖仓一致。
  9. Hive Metastore 无缝复用:现有数仓的 HMS 直接能用,Paimon 表对 Hive 来说就是普通的 External Table(STORED BY),迁移成本极低。

适用场景

场景Paimon 怎么用价值
Flink CDC 一键入湖MySQL/PostgreSQL/Oracle → Flink CDC → Paimon ODS 层(主键表)原来需要 Kafka + Hudi + 合并脚本的 3 跳,变 1 跳直接入湖,链路缩短一半
实时明细 DWD日志 / 埋点 / 业务明细实时清洗后写入 Paimon DWD 主键表下游 Flink 作业无需再读 Kafka,可以直接流读 Paimon 的 changelog,做到"湖也是消息队列"
T+0 准实时汇总按分钟/小时级 Flink 聚合写 Paimon DWS 汇总表同时支持 BI 工具分钟级更新,也支持 Spark 批跑 T+1 全量补数
数据修正 / Erase 合规删除按主键 Delete,或按分区 + 条件 UpdateGDPR、个人信息擦除场景下,无需 INSERT OVERWRITE 整分区重写
历史回溯 / 数据调试VERSION AS OF / TIMESTAMP AS OF / TAG数据口径回滚、对账、A/B 对比非常方便
与 StarRocks/Doris 构建湖仓加速层Paimon 存 ODS/DWD/DWS,StarRocks/Doris 做外部表/外表联邦查或物理导入 ADS冷热分层:冷数据存在便宜的对象存储,热数据放到 OLAP 引擎加速

典型版本与依赖速查表

Paimon 版本推荐 Flink 版本推荐 Spark 版本推荐 Hive 版本
Paimon 2.0 (stable, 推荐)Flink 1.20.x / 1.19.x(配合 Paimon Flink 1.20 Bundled Jar)Spark 3.5.x(配合 Paimon Spark 3.5 Bundled Jar)Hive 3.1.x
Paimon 0.9.xFlink 1.18.x / 1.19.xSpark 3.4.x / 3.5.xHive 3.1.x
Paimon 0.8.xFlink 1.17.x / 1.18.xSpark 3.3.x / 3.4.xHive 3.1.x
Paimon 0.7.xFlink 1.16.x / 1.17.xSpark 3.2.x / 3.3.xHive 3.1.x

HiDataPlus HDP 3.3.2 自带的是 Flink 1.15.x / Spark 3.1.x,做 Paimon 2.0 不兼容。所以必须独立安装 Flink 1.20(推荐路径 /home/bigdata/module/flink-1.20,别覆盖 HDP 自带版本);Spark 相关的先不写,后面单独补;Hive 3.1.0 完美复用 HDP 自带的 Hive Metastore(thrift://master1:9083),不用改。

配合作业管理平台:推荐独立安装 StreamPark 2.2.x/home/bigdata/module/streampark,端口 10001(与 Ambari 自带的 StreamPark 端口 10000 区分开),部署完 Flink 1.20 后在 StreamPark 页面里把 Flink Home 指向 /home/bigdata/module/flink-1.20,就能按 StreamPark Quick Start 的方式提交 Flink SQL / JAR 作业。